hive计算,报错FAILED: return code 3 fromorg.apache.hadoop.hive.ql.exec.mr.MapredLocalTask |
您所在的位置:网站首页 › spark 30041 › hive计算,报错FAILED: return code 3 fromorg.apache.hadoop.hive.ql.exec.mr.MapredLocalTask |
问题:在运行hivesql的时候,可能会碰到错误代码: FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask 环境:hive使用的MR引擎计算的。 原因:开启了hive的mapjoin,(设置参数数hive.auto.convert.join=true 默认开启)在map端就会进行表的join, 可以省略reduce阶段,时效更快,但是需要足够的内存,因为在map端join,需要其中一张表在每一个map中都有完整的数据,才能和另外一张表分布在map中的数据关联,如果内存不够,就会报这个错。 mapjoin的过程: 通过MapReduce Local Task,将小表读入内存,生成HashTableFiles上传至Distributed Cache中,这里会HashTableFiles进行压缩。MapReduce Job在Map阶段,每个Mapper从Distributed Cache读取HashTableFiles到内存中,顺序扫描大表,在Map阶段直接进行Join,将数据传递给下一个MapReduce任务。 Map阶段进行表之间的连接。而不需要进入到Reduce阶段才进行连接。这样就节省了在Shuffle阶段时要进行的大量数据传输。从而起到了优化作业的作用。 解决措施: 1、在hivesql的时候指定 hive.auto.convert.join=false 2、修改配置文件hive_conf.xml
hive.auto.convert.join false//true修改为false Enables the optimization about converting common join into mapjoin mapjoin的使用方法以及注意事项参考链接: https://blog.csdn.net/sinat_37574187/article/details/120444216 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |